package recursion;

/**
 * @program: play-structure
 * @author: baichen
 **/
public class Sum {
    public static int sum(int[] arr){	// 这个sum是由用户来使用的
        return sum(arr, 0);		//调用下面的sum,从第一个索引开始递归
    }

    // 计算arr[l...n)这个区间内所有数字的和
    private static int sum(int[] arr, int left){	//这个 sum 函数是真正的递归函数
        if(left == arr.length)	//相当于整个数组为空的时候
            return 0;
        //递归调用【从计算 left到n 的和变为 left+1到n 的和】,直到left=arr.length,返回0，
        // 然后一步步计算之前递归中断后的语句
        return arr[left] + sum(arr, left + 1);
    }

    public static void main(String[] args) {

        int[] nums = {1, 2, 3, 4, 5, 6, 7, 8};
        System.out.println(sum(nums));
    }
}
